#pragma once

namespace xncc {
namespace error {
    using error_code_t                                   = int;
    constexpr error_code_t ERROR_CODE_SUCCESS            = 0;   // 成功
    constexpr error_code_t QUEUE_ID_LESS_THAN_ZERO       = -1;  // 队列ID小于等于0
    constexpr error_code_t QUEUE_SIZE_LESS_THAN_MIN_SIZE = -2;  // 队列大小小于最小值
    constexpr error_code_t QUEUE_ID_REPEATED             = -3;  // 队列ID重复

    constexpr error_code_t BUSI_THREAD_ID_LESS_THAN_ZERO       = -4;  // 线程ID小于等于0
    constexpr error_code_t THREAD_ID_REPEATED                  = -5;  // 线程ID重复
    constexpr error_code_t SERVER_THREAD_ID_LESS_THAN_ZERO     = -6;  // 服务端的线程ID小于等于0
    constexpr error_code_t CLIENT_THREAD_ID_LESS_THAN_ZERO     = -7;  // 客户端的线程ID小于等于0
    constexpr error_code_t SUB_SERVER_THREAD_ID_LESS_THAN_ZERO = -8;  // 子服务的线程ID小于等于0

    constexpr error_code_t ERROR_IO_MULTI_MODE_IN_BUSI_THREAD           = -9;   // 业务线程不能使用IO多路复用模式
    constexpr error_code_t SUB_QUEUE_ID_IN_BUSI_THREAD_NOT_DEFINE       = -10;  // 订阅数据的队列ID未定义
    constexpr error_code_t SUB_QUEUE_ID_IN_BUSI_THREAD_HAS_REPEATED     = -11;  // 订阅数据的队列ID重复
    constexpr error_code_t PUB_QUEUE_ID_IN_BUSI_THREAD_NOT_DEFINE       = -12;  // 发布数据的队列ID未定义
    constexpr error_code_t PUB_QUEUE_ID_IN_BUSI_THREAD_HAS_REPEATED     = -13;  // 发布数据的队列ID重复
    constexpr error_code_t PUB_MSG_CODE_IN_BUSI_THREAD_LESS_THAN_MIN_ID = -14;  // 消息码小于最小值
    constexpr error_code_t PUB_MSG_CODE_IN_BUSI_THREAD_HAS_REPEATED     = -15;  // 消息码重复
    constexpr error_code_t SELF_PUB_SELF_SUB_IN_BUSI_THREAD             = -16;  // 自己订阅自己发布的消息 不允许
    constexpr error_code_t BUSI_THREAD_NAME_EMPTY                       = -17;  // 业务线程名称为空

    constexpr error_code_t ERROR_IO_MULTI_MODE_IN_SERVER_THREAD         = -18;  // 服务端线程不能使用IO多路复用模式
    constexpr error_code_t PUB_QUEUE_ID_IN_SERVER_THREAD_NOT_DEFINE     = -19;  // 发布数据的队列ID未定义
    constexpr error_code_t SERVER_THREAD_NAME_EMPTY                     = -20;  // 服务端线程名称为空
    constexpr error_code_t ERROR_IO_MULTI_MODE_IN_SUB_SERVER_THREAD     = -21;  // 子服务线程不能使用IO多路复用模式
    constexpr error_code_t SUB_SERVER_THREAD_NAME_EMPTY                 = -22;  // 子服务线程名称为空
    constexpr error_code_t PUB_QUEUE_ID_IN_SUB_SERVER_THREAD_NOT_DEFINE = -23;  // 发布数据的队列ID未定义

    constexpr error_code_t ERROR_IO_MULTI_MODE_IN_CLIENT_THREAD     = -24;  // 客户端线程不能使用IO多路复用模式
    constexpr error_code_t CLIENT_THREAD_NAME_EMPTY                 = -25;  // 客户端线程名称为空
    constexpr error_code_t PUB_QUEUE_ID_IN_CLIENT_THREAD_NOT_DEFINE = -26;  // 发布数据的队列ID未定义
    constexpr error_code_t CLIENT_THREAD_RECONN_MS_LESS_THAN_ZERO   = -27;  // 重连间隔小于等于0

    constexpr error_code_t MULTI_THREADS_PUB_TO_SINGLE_QUEUE = -28;  // 多线程发布到单个队列

}  // namespace error
}  // namespace xncc
